﻿// 5040. 拼接数组.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


/*
https://www.acwing.com/problem/content/5043/

给定 n
 个整数数组 array1,array2,…,arrayn
。

其中，数组 arrayi
 的长度为 li
。

给定一个长度为 m
 的整数序列 b1,b2,…,bm
，保证 1≤bi≤n
。

现在，我们希望将给定数组按 arrayb1,arrayb2,…,arraybm
 的顺序进行串联拼接，构成一个大数组。

注意，在串联拼接过程中，可能有给定数组不止被使用一次，也可能有给定数组从未被使用过。

你的任务是在生成的大数组中找到一个非空连续子数组，要求该非空连续子数组内所有元素之和尽可能大。

请你计算并输出非空连续子数组内所有元素之和的最大可能值。

例如，假设给定 3
 个整数数组 array1={1,6,−2},array2={3,3},array3={−5,1}
，给定整数序列 b={2,3,1,3}
。

那么，按照 array2,array3,array1,array3
 的顺序，将给定数组进行串联拼接，可以得到大数组 {3,3,−5,1,1,6,−2,−5,1}
。

生成的大数组中，元素和最大的非空连续子数组为 {3,3,−5,1,1,6}
，该子数组内所有元素之和为 9
。

输入格式
第一行包含两个整数 n,m
。

接下来 n
 行，其中第 i
 行用来描述 arrayi
，首先包含一个整数 li
 表示 arrayi
 的长度，然后包含 li
 个整数，表示 arrayi
 内的元素。

最后一行包含 m
 个整数 b1,b2,…,bm
。

输出格式
一个整数，表示非空连续子数组内所有元素之和的最大可能值。

数据范围
前 4
 个测试点满足 1≤n,m≤10
。
所有测试点满足 1≤n≤50
，1≤m≤250000
，1≤li≤5000
，1≤bi≤n
，所有给定数组内元素的取值范围均为 [−1000,1000]
。

输入样例1：
3 4
3 1 6 -2
2 3 3
2 -5 1
2 3 1 3
输出样例1：
9
输入样例2：
6 1
4 0 8 -3 -10
8 3 -2 -5 10 8 -9 -5 -4
1 0
1 -3
3 -8 5 6
2 9 6
1
输出样例2：
8
输入样例3：
2 1
2 -4 -6
5 6 8 3 5 -2
1
输出样例3：
-4
*/
int main()
{
    std::cout << "Hello World!\n";
}

 